function [Xparts_dynamic] = make_Xdynamic_providerAdoptions(config, Xdynamic_staticInputs, installedBases, outputLabels)
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	%%%%% Inputs:
	% config:					object (from getConfig_providerAdoptions)
	% Xdynamic_staticInputs:	object
	% 	.Xparts_static:				cell(NumParts,1)
	%		{1}:						object
	%			.X							dim1 x NumXstatic
	%			.X_FEs						dim1 x NumX_FEs
	%   	    .NumX_FE_vals               1 x NumX_FEs
	%			.Xnames						cell(1,NumXstatic) of strings
	%			.X_FE_labels				cell(1, NumX_FEs) of strings
	% installedBases:			object
	% 	.laggedProviders:				dim1 x 1
	% 	.laggedConsumersOrig:			dim1 x 1
	% 	.laggedConsumersDest:			dim1 x 1
	% outputLabels:				boolean
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	%%%%% Outputs:
	% Xparts_dynamic:			cell(NumParts,1)
	%	{1}:						object
	%		.X:							dim1 x NumXdynamic
	%		.X_FEs						dim1 x NumX_FEs
	%       .NumX_FE_vals               1 x NumX_FEs
	%		.Xnames:					cell(1,NumXdynamic) of strings
	%		.X_FE_labels				cell(1, NumX_FEs) of strings
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	
	% Unbundle installedBases
	laggedProviders      = installedBases.laggedProviders;
	laggedConsumersOrig = installedBases.laggedConsumersOrig;
	laggedConsumersDest = installedBases.laggedConsumersDest;
	
	% Unbundle Xdynamic_staticInputs
	Xparts_static = Xdynamic_staticInputs.Xparts_static;
	
	% Initialize Xparts_dynamic
	Xparts_dynamic = cell(1,1);

	if config.laggedBaseTransf.code == 1
		newX						= [log(1+laggedConsumersDest) log(1+laggedProviders)];     % dim1 x 2
		if outputLabels; newXnames	= {'logLaggedConsumersDest', 'logLaggedProviders'}; end;
	end
	
	if config.laggedBaseTransf.code == 2
		extraArgs     = Xdynamic_staticInputs.extraArgs;
		logDenom = extraArgs{1}; % dim1 x 1
		newX						= [log(1+laggedConsumersDest) log(1+laggedProviders)] - logDenom;     % dim1 x 2
		if outputLabels; newXnames	= {'log_LaggedConsumersDest_density', 'log_LaggedProviders_density'}; end;
	end
	
	if config.laggedBaseTransf.code == 3
		newX						= [log(1+laggedConsumersDest) log(1+laggedConsumersOrig) log(1+laggedProviders)];     % dim1 x 3
		if outputLabels; newXnames	= {'logLaggedConsumersDest', 'logLaggedConsumersOrig', 'logLaggedProviders'}; end;
	end
	
	if config.laggedBaseTransf.code == 4
		extraArgs     = Xdynamic_staticInputs.extraArgs;
		logDenom = extraArgs{1}; % dim1 x 1
		newX						= [log(1+laggedConsumersDest) log(1+laggedConsumersOrig) log(1+laggedProviders)] - logDenom; % dim1 x 3
		if outputLabels; newXnames	= {'logLaggedConsumersDest_density', 'logLaggedConsumersOrig_density', 'logLaggedProviders_density'}; end;
	end
	
	if config.laggedBaseTransf.code == 5
		extraArgs     = Xdynamic_staticInputs.extraArgs;
		logDenom = extraArgs{1}; % dim1 x 1
		newX						= [log(1+laggedConsumersOrig) log(1+laggedProviders)] - logDenom; % dim1 x 3
		if outputLabels; newXnames	= {'logLaggedConsumersOrig_density', 'logLaggedProviders_density'}; end;
	end
	
	if config.laggedBaseTransf.code == 11
		newX						= [1e-2*laggedConsumersDest 1e-2*laggedConsumersOrig 1e-2*laggedProviders];     % dim1 x 3
		if outputLabels; newXnames	= {'laggedConsumersDest_x_1e-2', 'laggedConsumersOrig_x_1e-2', 'laggedProviders_x_1e-2'}; end;
	end
	
	
	Xparts_dynamic{1}.X            = [newX Xparts_static{1}.X];       % (T*K) x NumXdynamic
	Xparts_dynamic{1}.X_FEs        = Xparts_static{1}.X_FEs;
	Xparts_dynamic{1}.NumX_FE_vals = Xparts_static{1}.NumX_FE_vals;
	if outputLabels
		Xparts_dynamic{1}.Xnames      = [newXnames Xparts_static{1}.Xnames]; % 1 x NumX
		Xparts_dynamic{1}.X_FE_labels = Xparts_static{1}.X_FE_labels;
	end

end
